<?php
namespace app\admin\controller;

\think\Loader::import('controller/Controller', \think\Config::get('traits_path') , EXT);

use app\admin\Controller;
use think\Db;
use think\Request;
use think\Validate;

class AdminUserInfo extends Controller
{
    use \app\admin\traits\controller\Controller;
    // 方法黑名单
    protected static $blacklist = [];

    protected function filter(&$map)
    {
        if ($this->request->param("account")) {
            $map['account'] = ["like", "%" . $this->request->param("account") . "%"];
        }
        if ($this->request->param("realname")) {
            $map['realname'] = ["like", "%" . $this->request->param("realname") . "%"];
        }
    }

    /**
     * 添加用户功能
     */
    public function add(Request $request)
    {
        if ($request->isPost()){
            $postData = $request->post(); // 接收提交数据
            //验证数据
            $rule = [
                'account' => 'require',
                'realname' => 'require',
                'password' => 'require',
            ];
            $message = [
                'account.require' => '账号不能为空',
                'realname.require' => '姓名不能为空',
                'password.require' => '密码不能为空',
            ];
            $validate = new Validate($rule, $message);
            $result = $validate->check($postData);
            if (!$result) {
                return ajax_return_adv_error($validate->getError()); // 返回验证信息
            }
            $user = Db::name('admin_user_info')->where('account',$postData['account'])->find();
            if ($user){
                return ajax_return_adv_error('该账号已经存在');
            }
            // 对密码进行加密
            $postData['password'] = md5($postData['password']);
            // 添加数据
            $addUserInfo = Db::name('admin_user_info')->strict(false)->insertGetId($postData);
            if ($addUserInfo){
                return ajax_return_adv('添加用户成功');
            }else{
                return ajax_return_adv_error('添加用户失败');
            }
        }else{
            return view('edit');
        }
    }

    /**
     * 编辑用户功能
     */
    public function edit(Request $request)
    {
        if ($request->isPost()){
            $postData = $request->post();
            // 验证数据
            $rule = [
                'id' => 'require',
                'account' => 'require',
                'realname' => 'require',
            ];
            $message = [
                'id.require' => '缺少必要的参数',
                'account.require' => '账号不能为空',
                'realname.require' => '姓名不能为空',
            ];
            $validate = new Validate($rule, $message);
            $result = $validate->check($postData);
            if (!$result) {
                return ajax_return_adv_error($validate->getError()); // 返回验证信息
            }
            // 更新数据
            $upData = Db::name('admin_user_info')->strict(false)->update($postData);
            if ($upData){
                return ajax_return_adv('更新成功');
            }else{
                return ajax_return_adv_error('更新失败');
            }
        }else{
            $data = input();
            // 查询用户信息
            $adminUserInfo = Db::name('admin_user_info')->where('id',$data['id'])->find();
            if ($adminUserInfo){
                return view('edit',compact('adminUserInfo'));
            }else{
                return ajax_return_adv_error('不存在该用户信息');
            }
        }
    }
    
    /**
     * 修改用户密码
     */
    public function edit_password(Request $request)
    {
        if ($request->isPost()){
            $postData = $request->post();
            //验证数据
            $rule = [
                'id' => 'require',
                'password' => 'require',
                'repassword' => 'require|confirm:password',
            ];
            $message = [
                'id.require' => '缺少参数',
                'password.require' => '密码不能为空',
                'repassword.require' => '重复密码不能为空',
                'repassword.confirm' => '重复密码和密码必须相同',
            ];
            $validate = new Validate($rule, $message);
            $result = $validate->check($postData);
            if (!$result){
                return ajax_return_adv_error($validate->getError());
            }
            $postData['password'] = md5($postData['password']);
            // 查找用户密码
            $password = Db::name('admin_user_info')->where('id',$postData['id'])->value('password');
            if ($password == $postData['password']){
                return ajax_return_adv_error('修改的密码与原密码一致');
            }
            $upPassword = Db::name('admin_user_info')->strict(false)->update($postData);
            if ($upPassword){
                return ajax_return_adv('修改密码成功');
            }else{
                return ajax_return_adv_error('修改密码失败');
            }
        }else{
            $data = input();
            // 验证数据
            $rule = [
                'id' => 'require',
            ];
            $message = [
                'id.require' => '缺少必要的参数',
            ];
            $validate = new Validate($rule,$message);
            $result = $validate->check($data);
            if (!$result){
                return ajax_return_adv_error($validate->getError());
            }
            $id = $data['id'];
            return view('',compact('id'));
        }
    }

    /**
     * 禁用功能
     */
    public function forbid()
    {
        $data = input();
        $userInfo = Db::name('admin_user_info')->where('id',$data['id'])->find();
        if (!$userInfo){
            return ajax_return_adv_error('不存在该用户信息');
        }elseif ($userInfo['account'] == 'admin') {
            return ajax_return_adv_error('不能禁止该用户');
        }
        // 禁用用户
        $up = Db::name('admin_user_info')->where('id',$data['id'])->update(['status'=>0]);
        if ($up){
            return ajax_return_adv('禁用成功');
        }else{
            return ajax_return_adv_error('禁用失败');
        }
    }
    /**
     * 恢复功能
     */
    public function restore()
    {
        $data = input();
        $userInfo = Db::name('admin_user_info')->where('id',$data['id'])->find();
        if (!$userInfo){
            return ajax_return_adv_error('不存在该用户信息');
        }
        // 禁用用户
        $up = Db::name('admin_user_info')->where('id',$data['id'])->update(['status'=>1]);
        if ($up){
            return ajax_return_adv('恢复成功');
        }else{
            return ajax_return_adv_error('恢复失败');
        }
    }

    /**
     * 新增删除功能
     */
    public function delete()
    {
        $data = input();
        if ($data['id'] == 1) {
            return ajax_return_adv_error('不能删除超级管理员');
        }elseif (empty($data['id'])){
            return ajax_return_adv_error('不存在该用户信息');
        }
        // 移到回收站
        $del = Db::name('admin_user_info')->where('id',$data['id'])->update(['isdelete'=>1]);
        if ($del){
            return ajax_return_adv('删除成功');
        }else{
            return ajax_return_adv_error('删除失败');
        }
    }
}
